package com.yida.gwj.common.mapper;

import com.yida.gwj.common.domain.GwjBaseOwner;
import com.yida.gwj.common.domain.dto.GwjBaseOwnerHouseListDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 基础数据（业主）Mapper接口
 *
 * @author lqq
 * @date 2022-11-14
 */
public interface GwjBaseOwnerMapper {

	/**
	 * 查询基础数据（业主）列表
	 *
	 * @param owner 基础数据（业主）
	 * @return 基础数据（业主）集合
	 */
	public List<GwjBaseOwner> selectGwjBaseOwnerList(GwjBaseOwner owner);

	/**
	 * 查询业务业主信息（基础数据管理模块）列表
	 *
	 * @param houseCodes 房屋标识码
	 * @param areaId     地区ID
	 * @return 业务业主信息（基础数据管理模块）集合
	 */
	List<GwjBaseOwner> selectGwjBaseListByGwjBaseHouseCodes(@Param("houseCodes") String[] houseCodes, @Param("areaId") Long areaId);

	/**
	 * 查询基础数据（业主）
	 *
	 * @param id 基础数据（业主）主键
	 * @return 基础数据（业主）
	 */
	GwjBaseOwner selectGwjBaseOwnerByGwjBaseOwnerId(Long id);

	/**
	 * 新增基础数据（业主）
	 *
	 * @param owner 基础数据（业主）
	 * @return 结果
	 */
	int insertGwjBaseOwner(GwjBaseOwner owner);

	/**
	 * 批量新增基础数据（业主）
	 *
	 * @param owners 基础数据（业主）
	 * @return 结果
	 */
	int insertBatchGwjBaseOwner(@Param("owners") List<GwjBaseOwner> owners);

	/**
	 * 修改基础数据（业主）
	 *
	 * @param owner 基础数据（业主）
	 * @return 结果
	 */
	int updateGwjBaseOwner(GwjBaseOwner owner);

	/**
	 * 修改基础数据（业主）
	 *
	 * @param gwjBaseOwners 基础数据（业主）
	 * @return 结果
	 */
	int updateBatchGwjBaseOwner(@Param("gwjBaseOwners") List<GwjBaseOwner> gwjBaseOwners);

	/**
	 * 删除基础数据（业主）
	 *
	 * @param id 基础数据（业主）主键
	 * @return 结果
	 */
	int deleteGwjBaseOwnerByGwjBaseOwnerId(Long id);

	/**
	 * 批量删除基础数据（业主）
	 *
	 * @param ids 需要删除的数据主键集合
	 * @return 结果
	 */
	int deleteGwjBaseOwnerByGwjBaseOwnerIds(Long[] ids);
	
	/*************************新功能保留区************************************/
	/**
	 * 新增基础数据（业主）
	 *
	 * @param owners 业主集合
	 * @return 结果
	 */
	public int insertImportGwjBaseOwner(List<GwjBaseOwner> owners);
	
	/**
	 * 修改基础数据（业主）
	 *
	 * @param owners 业主集合
	 * @return 结果
	 */
	public int updateImportGwjBaseOwner(List<GwjBaseOwner> owners);
	
	/**
	 * 删除基础数据（业主）
	 *
	 * @param houseCodes 房屋标识码
	 * @return 结果
	 */
	public int deleteGwjBaseOwnerByHouseCodes(String[] houseCodes);
	
	/*************************新功能保留区************************************/

	/**
	 * 查询业务业主信息（基础数据管理模块）列表
	 *
	 * @param houseCode 房屋标识码
	 * @param areaId     地区ID
	 * @return 业务业主信息（基础数据管理模块）集合
	 */
	GwjBaseOwner selectGwjBaseByGwjBaseHouseCodeAndAreaId(@Param("houseCode") String houseCode, @Param("areaId") Long areaId);

	/**
	 * 查询业主房屋信息列表
	 *
	 * @param gwjBaseOwner 业主信息
	 * @return /
	 */
	List<GwjBaseOwnerHouseListDTO> selectGwjOwnerHouseList(GwjBaseOwner gwjBaseOwner);
}
